package org.ekingstar.qd.service;

import java.util.List;

import org.ekingstar.qd.domain.QdCompareCond;
import org.ekingstar.qd.domain.QdDomain;
import org.ekingstar.qd.domain.QdSimplemeasu;
import org.ekingstar.qd.domain.QdWhereClause;

import com.ekingstar.framework.util.Page;

/**
 * 客户端查询功能业务实现类接口
 * @author 
 */
public interface CDoSearchService {

	/**
	 * @descirpt 简单查询
	 * @param strDomainId
	 * @param searchConditionIdNames
	 * @param searchConditionNames
	 * @param searchConditionValueNames
	 * @param pageNo
	 * @param pageSize
	 * @return Object[]
	 */
	public Object[] doSearch(String strDomainId,List<QdSimplemeasu> qdSimplemeasuList,String[] searchConditionIdNames,String[] searchConditionNames,String[] searchConditionValueNames,int pageNo, int pageSize);	
	
	/**
	 * @descirpt 简单查询
	 * @param sql
	 * @param pageNo
	 * @param pageSize
	 * @return Page
	 */
	public Page doReSearch(String sql,int pageNo, int pageSize);	
	
	
	/**
	 * @descripte 根据主题和用户角色(系统自动获取)获取查询条件
	 * @param strDomainId 主题ID号
	 * @return List
	 */
	@SuppressWarnings("unchecked")
	public List<QdCompareCond> getSearchList(String strDomainId);
	
	
	/**
	 * @descripte 根据主题和用户角色(系统自动获取)获取过滤条件
	 * @param strDomainId 主题ID号
	 * @return List
	 */
	@SuppressWarnings("unchecked")
	public List<QdWhereClause> getFilterList(String strDomainId);
	
	
	/**
	 * @descripte 根据主题和用户角色(系统自动获取)获取查询字段
	 * @param strDomainId 主题ID号
	 * @param qdSimplemeasuId 查询字段ID字符串
	 * @param type 标识
	 *        1： qdSimplemeasuId参数无效
	 *        2： qdSimplemeasuId参数有效
	 * @return List
	 */
	@SuppressWarnings("unchecked")
	public List<QdSimplemeasu> getFieldList(String strDomainId,String qdSimplemeasuId,String type);
	
	/**
	 * @descripte 根据主题和用户角色(系统自动获取)判断此用户是否具有操作权限
	 * @param strDomainId 主题ID号
	 * @return boolean  true 有权限  false 无权限
	 */
	@SuppressWarnings("unchecked")
	public boolean checkRole(String strDomainId);
	
	/**
	 * @descripte 根据查询条件的ID获取查询条件信息。
	 * @param strCompareCondId 查询条件字段对应ID号
	 * @return QdCompareCond  
	 */
	@SuppressWarnings({ "unchecked", "unchecked" })
	public QdCompareCond getQdCompareCond(String strCompareCondId);
	
	/**
	 * @descripte 获取查询条件下拉列表内容。
	 * @param strCompareCondId 查询条件字段对应ID号
	 * @return List  
	 */
	@SuppressWarnings({ "unchecked", "unchecked" })
	public List getOpenList(String strCompareCondId);
	
	/**
	 * @descripte 获取查询条件树数据内容。
	 * @param strCompareCondId 查询条件字段对应ID号
	 * @return List  
	 */
	@SuppressWarnings({ "unchecked", "unchecked" })
	public String getBuilderTree(String strCompareCondId);
	
	/**
	 * @descripte 获取查询条件下拉列表内容。
	 * @param id 查询条件字段ID号
	 * @return List  0 value 1 text 
	 */
	@SuppressWarnings("unchecked")
	public List getSearchConditionTypeSQLList(String sql);
	
	/**
	 * @descripte 根据主题获取主题所在位置标题
	 * @param qdDomain 主题
	 * @return String 
	 */
	@SuppressWarnings("unchecked")
	public String getTitle(QdDomain qdDomain);
	
	
	/**
	 * @descript 高级查询
	 * @param strDomainId
	 * @param qdSimplemeasuList
	 * @param condstr
	 * @param orderstr
	 * @param orderstrtype
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	public Object[] doHightSearch(String strDomainId,List<QdSimplemeasu> qdSimplemeasuList,String condstr, String orderstr,String orderstrtype ,int pageNo, int pageSize);
	
	
	/**
	 * @descript excel导出查询
	 * @param strDomainId
	 * @param qdSimplemeasuList
	 * @param condstr
	 * @param orderstr
	 * @param orderstrtype
	 * @return
	 */
	public List doExportForExcel(String strDomainId,List<QdSimplemeasu> qdSimplemeasuList,String condstr, String orderstr,String orderstrtype );
	
}
